const User = require('../model/user.model')

class UserService {
 /**
  * 创建用户
  * @param {string} user_name 用户名
  * @param {string} password 密码
  * @returns 插入的数据
  * @api private
  */
 async createUser(user_name, password) {
  // 插入数据
  // await表达式:> promise对象的值(value,status)
  const res = await User.create({ user_name, password })
  return res.dataValues
 }
 /**
  * 查询用户
  * @param {string|number|boolen} options 根据传入的字段查询 
  * @returns 查询到的数据
  * @api private
  */
 async getUserInfo({ id, user_name, password, is_admin }) {
  const whereOpt = {}
  id && Object.assign(whereOpt, { id })
  user_name && Object.assign(whereOpt, { user_name })
  password && Object.assign(whereOpt, { password })
  is_admin && Object.assign(whereOpt, { is_admin })

  const res = await User.findOne({
   // 返回的字段
   attributes: ['id', 'user_name', 'password', 'is_admin'],
   // 查询条件
   where: whereOpt
  })
  return res ? res.dataValues : null
 }
 /**
  * 根据id修改用户的数据
  * @param {number|string|boolean} options 
  * @return boolean
  * @api private
  */
 async updateById({ id, user_name, password, is_admin }) {
  const whereOpt = { id }
  const newUser = {}
  user_name && Object.assign(newUser, { user_name })
  password && Object.assign(newUser, { password })
  is_admin && Object.assign(newUser, { is_admin })
  const res = await User.update(newUser, { where: whereOpt })
  return !!res[0]
 }
}

module.exports = new UserService()
